package com.ssl.rms.service;

import com.github.pagehelper.PageInfo;
import com.ssl.rms.entity.User;
import com.ssl.rms.entity.UserExample;

import java.util.List;

/**
 * @author ssl
 * @date 2018-2-6
 */
public interface UserService {
    /**
     * 根据用户id查询用户
     *
     * @param id
     * @return
     */
    User get(Long id);

    /**
     * 根据用户名查找用户
     * @param userName
     * @return
     */
    User findByUserName(String userName);

    /**
     * 查询所有
     *
     * @param example 查询条件
     * @return
     */
    List<User> find(UserExample example);

    /**
     * 查询分页后的数据
     *
     * @param page    当前页
     * @param rows    获取的行数
     * @param example 封装后的查询条件
     * @return
     */
    PageInfo<User> findPageInfo(Integer page, Integer rows, UserExample example);

    /**
     * 新增用户
     *
     * @param user
     * @return
     */
    User save(User user);

    /**
     * 选择不为null的字段作为插入数据的字段来插入数据
     *
     * @param user
     * @return
     */
    User saveSelective(User user);

    /**
     * 修改用户
     *
     * @param user
     * @return
     */
    User update(User user);

    /**
     * 选择不为null的字段作为更新数据的字段来更新数据
     *
     * @param user
     * @return
     */
    User updateSelective(User user);

    /**
     * 根据id删除用户
     *
     * @param id
     */
    void deleteById(Long id);


}
